Thread এবং Multithreading এর ধারণা

Java Technologies - Java.lang প্যাকেজ (Java.lang Package) - Thread এবং Runnable ইন্টারফেস
281

Thread এর ধারণা:

Thread হল একটি একক কার্যকরী একক (execution unit) যা একটি প্রোগ্রামের একটি অংশ হিসাবে কাজ করে। এটি একটি প্রোগ্রামে বিভিন্ন কাজ বা কাজের অংশগুলি সমান্তরালভাবে (concurrently) সম্পাদন করতে সাহায্য করে। Java-তে, Thread একটি বিশেষ ক্লাস যা একটি একক কর্ম (task) চালানোর জন্য ব্যবহৃত হয়। এটি মূলত মাল্টিথ্রেডিং (multithreading) পরিচালনা করতে ব্যবহৃত হয়।

Thread এর মৌলিক বৈশিষ্ট্য:

  1. Lightweight Process:
    • থ্রেড একটি প্রোগ্রামের ভেতরের lightweight প্রসেস হিসেবে কাজ করে। এটি কম মেমরি ব্যবহার করে, কারণ এটি একেই প্রোগ্রামের মধ্যে অন্যান্য থ্রেডগুলির সাথে একত্রে রান করে।
  2. Concurrency:
    • একাধিক থ্রেডের মাধ্যমে একসাথে একাধিক কাজ করা সম্ভব হয়। একটি থ্রেড একটি কাজ করতে থাকলে অন্য থ্রেড অন্য কাজ করে, এবং এই প্রক্রিয়াকে concurrency বলা হয়।
  3. Independence:
    • এক একটি থ্রেড একে অপর থেকে স্বাধীনভাবে কাজ করতে পারে, এবং একাধিক থ্রেড একে অপরের কাজের সাথে সমান্তরালভাবে চলতে পারে।
  4. Multitasking:
    • থ্রেড বিভিন্ন কাজ একসাথে করতে সহায়তা করে, যা multitasking এর অংশ। একাধিক কাজ একই সময়ে চালানো সম্ভব হয়, যেমন একটি থ্রেড একটি কাজ সম্পন্ন করছে এবং অন্য থ্রেড অন্য কাজ।

Thread তৈরি করার উপায়:

Java-তে Thread ক্লাসের দুটি প্রধান পদ্ধতি রয়েছে থ্রেড তৈরি এবং চালানোর জন্য:

  1. Thread Class এক্সটেন্ড করা:
    • একটি নতুন ক্লাস তৈরি করা এবং এতে Thread ক্লাস এক্সটেন্ড করা, তারপর run() মেথড ওভাররাইড করা।
  2. Runnable Interface ইমপ্লিমেন্ট করা:
    • একটি ক্লাস তৈরি করা যা Runnable ইন্টারফেস ইমপ্লিমেন্ট করে এবং এর run() মেথডে কার্যকরী কোড লেখা।

Thread তৈরি করা (Thread Class এক্সটেন্ড করে):

class MyThread extends Thread {
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        MyThread t = new MyThread();
        t.start();  // start() method starts the thread
    }
}

Thread তৈরি করা (Runnable Interface ইমপ্লিমেন্ট করে):

class MyRunnable implements Runnable {
    public void run() {
        System.out.println("Thread is running...");
    }

    public static void main(String[] args) {
        MyRunnable runnable = new MyRunnable();
        Thread thread = new Thread(runnable);
        thread.start();  // start() method starts the thread
    }
}

Multithreading এর ধারণা:

Multithreading হল একাধিক থ্রেডের মাধ্যমে একযোগে কাজ করার প্রক্রিয়া। এটি concurrency (সমান্তরাল কার্যক্রম) সক্ষম করে, যেখানে একাধিক কাজ বা প্রক্রিয়া একে অপরের সাথে সমান্তরালভাবে (concurrently) চলে। Multithreading এর মাধ্যমে CPU একটি থ্রেডে কাজ করার সময় অন্য থ্রেডের জন্য অপেক্ষা না করে একাধিক কাজ সম্পন্ন করতে পারে।

Multithreading এর প্রয়োজনীয়তা:

  1. Performance Improvement (পারফরম্যান্স উন্নয়ন):
    • যখন একাধিক থ্রেড একই সময় কাজ করে, তখন সমান্তরালভাবে কাজ হওয়ায় প্রোগ্রামের পারফরম্যান্স বৃদ্ধি পায়। বিশেষ করে CPU-intensive কাজগুলির ক্ষেত্রে।
  2. Efficient Resource Utilization (সম্পদের কার্যকর ব্যবহার):
    • CPU কখনো idle থাকে না, কারণ এক থ্রেড কাজ করার সময় অন্য থ্রেড কাজ করে। এতে CPU-এর সম্পদের ব্যবহার বৃদ্ধি পায়।
  3. Responsiveness (প্রতিক্রিয়া):
    • GUI অ্যাপ্লিকেশনগুলিতে multithreading ব্যবহারের মাধ্যমে, একটি থ্রেড ইউজার ইনপুট গ্রহণ করছে এবং অন্য থ্রেড ব্যাকগ্রাউন্ড কাজ করে। এটি অ্যাপ্লিকেশনকে দ্রুত এবং প্রতিক্রিয়াশীল (responsive) করে তোলে।

Multithreading এর প্রক্রিয়া:

  1. Thread Scheduling:
    • মাল্টিথ্রেডিং এর মাধ্যমে একাধিক থ্রেড সমান্তরালভাবে চলতে থাকে। JVM থ্রেড সিডিউলিং করতে পারে, অর্থাৎ কখন কোন থ্রেড চলবে এবং থ্রেডগুলি কিভাবে CPU সয়ংক্রিয়ভাবে ভাগ করবে তা নির্ধারণ করে।
  2. Thread Synchronization:
    • একাধিক থ্রেড যদি একে অপরের সাথে একই রিসোর্স শেয়ার করে, তখন সঠিকভাবে থ্রেডগুলির সমন্বয় করা উচিত, যাতে ডেটার সমন্বয় ঠিক থাকে এবং thread interference বা data inconsistency না হয়। এক্ষেত্রে synchronization ব্যবহার করা হয়।
    • synchronized কিওয়ার্ড থ্রেড সিঙ্ক্রোনাইজ করার জন্য ব্যবহৃত হয়।

Thread Synchronization উদাহরণ:

class Counter {
    private int count = 0;

    public synchronized void increment() {
        count++;
    }

    public int getCount() {
        return count;
    }
}

public class MultithreadingExample {
    public static void main(String[] args) {
        Counter counter = new Counter();

        // Thread 1
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                counter.increment();
            }
        });

        // Thread 2
        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 1000; i++) {
                counter.increment();
            }
        });

        t1.start();  // Thread 1 starts
        t2.start();  // Thread 2 starts

        try {
            t1.join();  // Wait for Thread 1 to finish
            t2.join();  // Wait for Thread 2 to finish
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Final Count: " + counter.getCount());  // Output: 2000
    }
}

ব্যাখ্যা:

  • synchronized কিওয়ার্ড ব্যবহার করার মাধ্যমে increment() মেথডটি সিঙ্ক্রোনাইজ করা হয়েছে, যাতে একসাথে একাধিক থ্রেড একই রিসোর্স (এখানে count) অ্যাক্সেস না করে।
  • join() মেথড ব্যবহার করা হয়েছে, যাতে মূল থ্রেড দুটি সাব-থ্রেডের কাজ শেষ হওয়ার পর কেবল ফলাফল প্রদর্শন করে।

Multithreading এর সুবিধা:

  1. Improved Performance: একাধিক থ্রেড একযোগে কাজ করে কাজের সময় কমিয়ে দেয় এবং পারফরম্যান্স বাড়ায়।
  2. Better Resource Utilization: CPU-এর সম্পদের সর্বোত্তম ব্যবহার নিশ্চিত করে।
  3. Increased Responsiveness: ইউজার ইনপুট দ্রুত গ্রহণ করা সম্ভব হয় এবং ব্যাকগ্রাউন্ড কাজও একসাথে চলে।
  4. Real-time Processing: রিয়েল-টাইম অ্যাপ্লিকেশনে একাধিক কাজ একসাথে চলতে পারে (যেমন, ভিডিও প্রসেসিং, সিগন্যাল প্রসেসিং ইত্যাদি)।

Thread হল একক কার্যকরী একক (execution unit), যা Java প্রোগ্রামগুলিতে একসাথে একাধিক কাজ সম্পাদন করতে সহায়তা করে। Multithreading হল একাধিক থ্রেড ব্যবহার করে একাধিক কাজ সমান্তরালভাবে সম্পাদন করার প্রক্রিয়া। Java-তে Thread ক্লাস এবং Runnable ইন্টারফেস ব্যবহার করে মাল্টিথ্রেডিং বাস্তবায়ন করা হয়। মাল্টিথ্রেডিং ব্যবহারে performance, resource utilization, এবং responsiveness বৃদ্ধি পায়, তবে সঠিকভাবে থ্রেড সিঙ্ক্রোনাইজেশন এবং সঠিক স্ট্রাকচার ব্যবহারের গুরুত্ব রয়েছে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...